package com.qabaco.odondata.model.entities;

import java.io.Serializable;

import java.sql.Timestamp;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.ColumnResult;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@NamedQueries({
  @NamedQuery(name = "ConsultaDet.findAll", query = "select o from ConsultaDet o")
})
@SqlResultSetMapping(name = "qConsultasDetById",
                     entities={@EntityResult(entityClass = ConsultaDet.class)},
                     columns ={@ColumnResult(name="NOMBRE_USUARIO"),
                               @ColumnResult(name="COD_IMAGEN")} 
                     )
@Table(name = "consultas_det")
public class ConsultaDet implements Serializable {
    private String consulta;
    private Timestamp fecha;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(nullable = false)
    private Integer id;
    @Column(name="ID_CONSULTA")
    private Integer idConsulta;
    @Column(name="ID_USUARIO")
    private Integer idUsuario;    
    @Column(name="ID_IMAGENES_GRP")
    private Integer idImagenesGrp;
    
    @Transient
    private Integer codImagenPri;      
    
    @Transient
    private String nombreUsuario;
    
    @Transient
    private Boolean showGaleria = false;
    
    @Transient
    private List<Imagen> listaImagenes;
    
    @Transient         
    private String nombreImagenPri;

    public ConsultaDet() {
    }

    public ConsultaDet(String consulta, Timestamp fecha, Integer id,
                       Integer idConsulta, Integer idUsuario) {
        this.consulta = consulta;
        this.fecha = fecha;
        this.id = id;
        this.idConsulta = idConsulta;
        this.idUsuario = idUsuario;
    }

    public String getConsulta() {
        return consulta;
    }

    public void setConsulta(String consulta) {
        this.consulta = consulta;
    }

    public Timestamp getFecha() {
        return fecha;
    }

    public void setFecha(Timestamp fecha) {
        this.fecha = fecha;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getIdConsulta() {
        return idConsulta;
    }

    public void setIdConsulta(Integer idConsulta) {
        this.idConsulta = idConsulta;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setIdImagenesGrp(Integer idImagenesGrp) {
        this.idImagenesGrp = idImagenesGrp;
    }

    public Integer getIdImagenesGrp() {
        return idImagenesGrp;
    }


    public void setCodImagenPri(Integer codImagenPri) {
        this.codImagenPri = codImagenPri;
    }

    public Integer getCodImagenPri() {
        if (getListaImagenes() != null && getListaImagenes().size() > 0)
            codImagenPri = getListaImagenes().get(0).getCodImagen(); // Codigo de imagen principal
        return codImagenPri;
    }

    public void setShowGaleria(Boolean showGaleria) {
        this.showGaleria = showGaleria;
    }

    public Boolean getShowGaleria() {
        return showGaleria;
    }

    public void setListaImagenes(List<Imagen> listaImagenes) {
        this.listaImagenes = listaImagenes;
    }

    public List<Imagen> getListaImagenes() {
        return listaImagenes;
    }

    public void setNombreImagenPri(String nombreImagenPri) {
        this.nombreImagenPri = nombreImagenPri;
    }

    public String getNombreImagenPri() {
      if (getListaImagenes() != null && getListaImagenes().size() > 0)
          nombreImagenPri = getListaImagenes().get(0).getNombre(); // Nombre de imagen principal
      else 
          nombreImagenPri = null;
      return nombreImagenPri;
    }
}
